package cn.itcast.cxf.service;

import cn.itcast.cxf.domain.User;

import javax.ws.rs.*;
import java.util.List;

/**
 * Created by Think on 2017/9/18.
 */
//@Path("userService")
//@Produces("*/*")
public interface IUserService {

    /**
     * 第一：
     @Path 服务访问资源路径
     例如：如果访问saveUser方法  /userService/user
     第二：
     @Produces 生产（表示方法返回值）  @Consumes 消费 （表示方法参数）
     @Consumes 指定能够处理客户端传递过来数据格式
     例如：@Consumes("application/xml")：表示传递xml格式的数据
     @Produces 指定能否生成哪种格式数据返回给客户端
     例如：@Produces({ "application/xml", "application/json" })：表示返回xml的数据格式或者json的数据格式。
     第三：
     @GET 查询
     @PUT 修改
     @POST 增加
     @DELETE 删除
     第四：如果实现某条数据单独查询，使用url资源传递参数 ！ 传递{id}，并使用@PathParam(“id”)
     例子：
     @GET
     @Path("/user/{id}")
     @Consumes("application/xml")
     public User finUserById(@PathParam("id") Integer id);

      * @param user
     */

    @POST
    @Path("/user")
    @Consumes({"application/xml","application/json"})
    public void saveUser(User user);

    @PUT
    @Path("/user")
    @Consumes({"application/xml","application/json"})
    public void updateUser(User user);

    @GET
    @Path("/user")
    @Produces({"application/xml","application/json"})
    public List<User> findAllUsers();

    @GET
    @Path("/user/{id}")
    @Consumes({"application/xml","application/json"})
    @Produces({"application/xml","application/json"})
    public User finUserById(@PathParam("id") Integer id);

    @DELETE
    @Path("/user/{id}")
    @Consumes({"application/xml","application/json"})
    public void deleteUser(@PathParam("id") Integer id);

}
